// var message:string = "Hello zoo"
// console.log(message);

// class Site{
//     name():void{
//         console.log("bye bye");
        
//     }
// }
// var site=new Site();
// site.name();

// let flag:boolean = true;
// // flag = 1;
// let binarys:number = 0b1010
// let oct:number=0o744
// let bun:number=123
// let hex:number = 0xf00d
// let myName:string="张三"
// console.log(myName);
// let arr:number[]=[1,2]
// console.log(arr);
// let x:[string,number]
// x= ['my',1]
// console.log(x[0]);
// console.log(x[1]);

// // enum Color {RED,BLUE,YELLOW}
// // let c:Color = Color.BLUE
// // console.log(c);

// let y:any =1
// y = true
// y="123sss"

// let arraylist:any[]=[1,false,'哈啊']
// arraylist[1]=2
// console.log(arraylist);

// let z:number = 1
// // z = undefined
// // z = null
// let m:number | null | undefined
// m = 1
// m = null
// m = undefined

// function hello():void{
//     alert("hello ts")
// }

// // function func(foo:()=>void){
// //     let f = foo()
// //     f.doSth()
// // }

// let k:never;
// let j:number;
// // k = 123;
// k = (()=>{throw new Error('exception')})()
// j = (()=>{throw new Error('exceptions')})()

// function error(message:string):never{
//     throw new Error(message)
// }

// function loop():never{
//     while(true){
        
//     }
// }

// var uname:string = "look"
// var pname:string
// var str1 = "1s"
// var str2:number=<number> <any>str1 ;
// console.log(str2);

// var globle_num = 12
// class Numbers{
//     num_val = 13
//     static sval=14
//     storeNum():void{
//         var local_num = 15
//     }
// }
// console.log(globle_num);

// console.log(Numbers.sval);

// var n = new Numbers()
// console.log(n.num_val);

// var grade:string = "A"
// switch(grade){
//     case "A":{
//         console.log("优秀");
//         break;
//     }
//     case "B":{
//         console.log("良好");
//         break;
//     }
//     default:{
//         console.log("一般般");
//         break
//     }
// }

// var n:any = "abc"
// for(var i in n){
//     console.log(n[i]);
    
// }

// let someArray=[1,'string',false]
// for(let ent of someArray){
//     console.log(ent);
    
// }

// let dataList = [4,5,6]
// dataList.forEach((val,index,arr)=>{
//     console.log(val);
//     console.log(index);
//     console.log(arr[index]);
    
    
    
// })


// function greetContent():string{
//     return "hello jack"
// }

// console.log(greetContent());

// function add(x:number,y:number):number{
//     return x+y;
// }
// console.log(add(2,5));

// function concatName(first:string,second?:string):string{
//     console.log(second);
    
//     if(!second){
//         second=""
//     }
//     return first+second;
// }
// console.log(concatName("a"));

// function paste(price:number,rate:number=0.5){
//     console.log(price*rate);
    
// }
// paste(1000,0.2)
// paste(1000)

// function buildName(first:string,...restName:string[]):string{
//     return first+" "+restName.join(" ")
// }
// console.log(buildName("a","b","c"));

// function addNumbers(...nums:number[]):number{
//     var sum:number=0
//     for(var i of nums){
//         sum+=i;
//     }
//     return sum
// }
// console.log(addNumbers(1,2,3,4,5));

// var res = function(x:number,y:number):number{
//     return x+y;
// }
// console.log(res(3,5));

// (function(){
//     console.log("hellowordsssss");
    
// })()

// var foo=(x:number)=>{ return 10+x}
// console.log(foo(10));

// var func = (x) =>{
//     if(typeof x == 'number'){
//         console.log("this is a number");
        
//     }
//     if(typeof x == 'string'){
//         console.log('this is a string');
        
//     }
// }
// console.log(func(1));
// console.log(func('sss'));

// var display = x =>{
//     console.log(x);
    
// }

// console.log(display(3));

// var dis = () =>{
//     console.log('函数调用');
    
// }

// dis()

// var num = new Number("s")
// console.log('num',num);


// console.log(Number.MAX_VALUE);
// console.log(Number.MIN_VALUE);
// console.log(Number.POSITIVE_INFINITY);
// console.log(Number.NEGATIVE_INFINITY);

// function employee(id:number,name:string){
//     this.id = id;
//     this.name = name
// }

// var emp = new employee(123,'admin')
// employee.prototype.email = 'www.baidu.com'
// console.log(emp.email);

// var num = 3.1415
// console.log(num.toFixed(2));

// var n = new Number(2.222451)
// console.log(n.toLocaleString());
// var numlist:number[] = [1,2,3]
// numlist.forEach((val,index,arr)=>{
//     console.log(val);
//     console.log(index);
//     console.log(arr[index]);
    
    
    
// })

// var nameArr:number[] = new Array(4)
// for(var i=0;i<nameArr.length;i++){
//     nameArr[i] = 2*i
//     console.log(nameArr[i]);
    
// }

// var sites = new Array('abc','def','hjk')
// for(var i of sites){
//     console.log(i);
    
// }

// var arr:number[] = [12,13]
// var[x,y] = arr;
// console.log(x);
// console.log(y);


// var a1:any = [1,2,3]
// var a2:any = ['a','b','c']
// var a3:any = a2.concat(a1)
// console.log(a3);

// function isBig2(val,index,arr){
//     return val>2
// }
// function isBig0(val,index,arr){
//     return val>0
// }
// console.log(a1.every(isBig2));
// console.log(a1.every(isBig0));
// console.log(a1.filter(isBig2));
// console.log(a1.filter((val,index,arr)=>{
//     return val>1
// }));
// console.log(a1.slice(1,2));
// console.log(a1.some(isBig2));


let nameMap = new Map()
nameMap.set('a',1)
nameMap.set('b',2)
// console.log(nameMap.get('a'));
// console.log(nameMap.get('c'));
// console.log(nameMap.has('a'));
// nameMap.delete('a')
// nameMap.clear()
// console.log(nameMap.size);
// for(let key of nameMap.keys()){
//     console.log(key);
    
// }

// for(let val of nameMap.values()){
//     console.log(val);
    
// }

// for(let ent of nameMap.entries()){
//     console.log(ent[0]);
//     console.log(ent[1]);
    
// }
// for(let[key,val] of nameMap){
//     console.log(key,val);
    
// }

// var meta = [1,'123']
// console.log(meta[0],meta[1]);
// meta.push("zhangsan")
// // meta.pop()
// console.log(meta,meta);

// var val:string|number|boolean
// val  = 1
// console.log(val);
// val = '2ss'
// console.log(val);
// val = true

// interface IPerson{
//     firstName:string,
//     lastName:string,
//     sayHi:()=>string
// }

// var customer:IPerson={
//     firstName:"tom",
//     lastName:"hanks",
//     sayHi:():string=>{
//         return "hi"
//     }
// }
// var employee:IPerson = { 
//     firstName:"Jim",
//     lastName:"Blakes", 
//     sayHi: ():string =>{return "Hello!!!"} 
// } 
// console.log(customer.firstName);


// interface Person{
//     age:number
// }

// interface Musician extends Person{
//     instrument:string
// }

// var drumer = <Musician>{}
// drumer.age = 20
// drumer.instrument="piano"

// console.log(drumer);

// class Car{
//     enginee:string;
//     constructor(enginee:string){
//         this.enginee = enginee
//     }
//     disp():void{
//         console.log("发动机：",this.enginee);
        
//     }
// }

// var c = new Car("兔崽子")

// c.disp()

// class HF extends Car{
//     disp():void{
//         super.disp()
//         console.log("哈哈");
        
//     }
// }

// var hf = new HF("诛仙")
// console.log(hf.disp());


// interface ILoan{
//     interest:string
// }

// class Omg implements ILoan{
//     interest: string
//     rebate:number
//     constructor(interest:string,rebate:number){
//         this.interest = interest
//         this.rebate = rebate
//     }
// }

// var obj = new Omg("lal",3)
// console.log(obj.interest,obj.rebate);

// var obj = {
//     name:'zs',
//     age:13,
//     say:function(){}
// }
// console.log(obj.name);
// obj.say = function(){
//     console.log('hihihi');
    
// }
// obj.say()


// interface IPoint{
//     x:number
//     y:number
// }

// function addPoints(p1:IPoint,p2:IPoint):IPoint{
//     var x = p1.x+p2.x
//     var y = p2.y+p2.y
//     return {x:x,y:y}
// }

// var newPoint = addPoints({x:3,y:4},{x:5,y:5})
// console.log(newPoint.x);
// console.log(newPoint.y);

// function identity<T>(arg:T){
//     return arg
// }

// var str:string =  identity("123")
// console.log(str);

// interface KeyValuePair<K,V>{
//     key:K;
//     value:V
// }

// function printArray<E>(arr:E[]):void{
//     arr.forEach((item)=>{
//         console.log(item);
        
//     })
// }

// function getResult<R>(value:R):R{
//     return value;
// }


// function indentity<T>(arg:T):T{
//     return arg;
// }

// let resultStr= indentity<string>("诛仙3")
// console.log(resultStr);

// let resultNum = indentity<number>(3)
// console.log(resultNum);

// interface Pair<K,V>{
//     first:K;
//     second:V;
// }

// let pair:Pair<string,number> = {first:'hello',second:42}
// console.log(pair);

// class Box<T>{
//     private value:T;
//     constructor(value:T){
//         this.value = value;
//     }
//     getValue():T{
//         return this.value;
//     }
// }

// let strBox = new Box<string>("哈哈gg")
// console.log(strBox.getValue());




